// 阿里云DashScope API封装
import axios from 'axios';

/**
 * 调用阿里云DashScope API进行多模态理解
 * @param {string} imageUrl - 图像URL
 * @param {string} text - 文本查询
 * @param {string} apiKey - 可选，API密钥，默认使用环境变量
 * @returns {Promise<Object>} - 返回API响应结果
 */
export async function callDashScope(imageUrl, text, apiKey = process.env.DASHSCOPE_API_KEY) {
  if (!apiKey) {
    throw new Error('API密钥未提供，请设置环境变量DASHSCOPE_API_KEY或传入apiKey参数');
  }

  const BASE_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1';
  const data = {
    model: 'qwen-vl-max', // 模型名称
    messages: [
      {
        role: 'user',
        content: [
          { type: 'image_url', image_url: { url: imageUrl } },
          { type: 'text', text: text }
        ]
      }
    ]
  };

  try {
    const response = await axios.post(`${BASE_URL}/chat/completions`, data, {
      headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json'
      }
    });

    if (!response.data) {
      throw new Error('API响应为空');
    }

    return response.data;
  } catch (error) {
    console.error('调用DashScope API出错:', error);
    throw error;
  }
}

/**
 * 主函数示例
 */
async function main() {
  try {
    // 示例用法
    const result = await callDashScope(
      'https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg',
      '这是什么？'
    );
    console.log('API响应结果:', JSON.stringify(result, null, 2));
  } catch (error) {
    console.error('执行出错:', error);
  }
}

// 如果直接运行此文件，则执行main函数
if (require.main === module) {
  main();
}